import sys
from PIL import Image
import os
import re



def natural_sort_key(s):
    # 使用正则表达式将文本和数字分开
    return [int(text) if text.isdigit() else text.lower() for text in re.split('([0-9]+)', s)]


def convert_images_to_pdf(image_folder, output_pdf):
    # 获取指定文件夹中的所有 PNG 文件
    image_files = [f for f in os.listdir(image_folder) if f.endswith('.png')]

    # 使用自然排序
    image_files.sort(key=natural_sort_key)

    # 确保至少有一张图片
    if not image_files:
        print("No PNG files found in the specified folder.")
        return

    # 将图片加载到列表中，同时转换为 RGB
    images = [Image.open(os.path.join(image_folder, img)).convert('RGB') for img in image_files]

    # 将列表中的所有图片合并为一个 PDF 文件
    images[0].save(output_pdf, save_all=True, append_images=images[1:])

if __name__== '__main__' :
    # # 示例用法
    # image_folder = 'path/to/your/png/folder'  # 替换为PNG图片所在文件夹路径
    # output_pdf = 'output.pdf'  # 输出的PDF文件名
    image_folder = sys.argv[1]
    output_pdf = sys.argv[2]
    convert_images_to_pdf(image_folder, output_pdf)
